package interfaces;

/**
 * Interface a ser implementada por um trabalhador
 * 
 * @author robertow
 *
 */
public interface IWorker {

	/**
	 * Mensagem enviada pelo gerente para um novo trabalhador, para estabelecer
	 * comunicacao
	 * 
	 * @param workerId
	 */
	void bossContact(String workerId);

	/**
	 * Mensagem enviada pelo gerente, contendo um novo job a calcular.
	 * 
	 * @param jobId
	 * @param jobDescription
	 */
	void newJob(String jobId, byte[] jobDescription);
	
	/**
	 * Define uma Identificacao para o node
	 * @param id
	 */
	void setID(String id);

	/**
	 * Obtem a identificacao do node
	 * @return
	 */
	String getID();
	
	/**
	 * Define a capacidade do node
	 * @param capacity
	 */
	void setCapacity(float capacity);

	/**
	 * Obtem a capacidade do node
	 * @return
	 */
	float getCapacity();

	/**
	 * Define a quantidade de trabalho do node
	 * @param workload
	 */
	void setWorkload(int workload);

	/**
	 * Obtem a quantidade de trabalho do node
	 * @return
	 */
	int getWorkload();
	
	/**
	 * Define a quantidade de trabalho que deve ser enviada para um node
	 * @param requestSize
	 */
    void setRequestSize(int requestSize);

    /**
     * Obtem a quantidade de trabalho a ser enviada para um node
     * @return
     */
    int getRequestSize();
}
